#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <malloc.h>
#include <assert.h>
#include "projectiles.h"

/*
typedef struct
{
    int degats;
    int vitesse;
    bloc* hitBox;
    int dir;
}projectile;
*/

void initProjectile (projectile* A)
{
	assert (A != NULL);
	A->degats = 0;
	A->vitesse = 0;
	A->hitBox = NULL;
	A->dir = 0;
}

void setProjectile (projectile* arme, int degats, int vitesse, bloc* hitBox)
{
	assert (arme != NULL);
	assert (degats > 0);
	assert (vitesse > 0);
	arme->degats = degats;
	arme->vitesse = vitesse;
	arme->hitBox = (bloc *) malloc (sizeof (bloc));
	copieBloc (hitBox, arme->hitBox);
}

void copieProjectile (projectile* A1, projectile* A2)
{
	assert (A1 != NULL);
	setProjectile (A2, A1->degats, A1->vitesse, A1->hitBox);
}

void setDirectionTir (projectile* P, int direction)
{
	assert (direction > 0);
	if (P != NULL)
	{
		P->dir = direction;
	}
}

void videProjectile (projectile* P)
{
	assert (P != NULL);
	supprimeBloc (P->hitBox);
	initProjectile (P);
}

void projectileTestRegression ()
{
	bloc hitBoxA;
	projectile A1, A2;
	initBloc (&hitBoxA);
	setBloc (&hitBoxA, 1, 1, '*');

	initProjectile (&A1);

	/* Verification de initProjectile */
	if (A1.degats != 0 || A1.vitesse != 0 || A1.hitBox != NULL || A1.dir != 0)
	{
		printf("Problème avec initProjectile...\n\n");
	}
	else
	{
		printf("initProjectile est OK ! \n\n");
	}

	setProjectile (&A1, 30, 10, &hitBoxA);

	/* Verification de setProjectile */
	if (A1.degats != 30)
	{
		printf("Problème avec les degats pour setProjectile...\n\n");
	}
	else if (A1.vitesse != 10)
	{
		printf("Problème avec la vitesse pour setProjectile...\n\n");
	}
	else if (A1.hitBox == NULL)
	{
		printf("Problème avec l'allocation pour setProjectile...\n\n");
	}
	else
	{
		printf("setProjectile est OK ! \n\n");
	}

	copieProjectile(&A1, &A2);

	/* Verification de copieProjectile */
	if (A2.degats != 30)
	{
		printf("Probleme pour les degats dans copieProjectile...\n\n");
	}
	else if (A2.vitesse != 10)
	{
		printf("Probleme pour la vitesse dans copieProjectile...\n\n");
	}
	else
	{
		printf("copieProjectile est OK !\n\n");
	}

	videProjectile (&A1);
	videProjectile (&A2);
}
